class FatturaCliente < ActiveRecord::Base
  acts_as_paranoid unless SHOW_DELETED
  has_attached_file :fattura, :whiny => false,
    :styles => { :medium => "240x240>", :thumbnail => [ "60x60>", :jpg ] }

  belongs_to :partner
  has_and_belongs_to_many :centri_costo, :join_table => 'centri_costo_fatture_cliente', :uniq => true, :class_name => 'CentroCosto'
  belongs_to :metodo_pagamento
  belongs_to :conto_finanziario
  belongs_to :tipo_fattura
  has_many :note, :as => :nota_ref, :dependent => :protect
  validates_numericality_of :totale
  validates_presence_of :anno, :numero, :data_fattura, :tipo_fattura, :partner
  validates_presence_of :data_pagamento, :if => :is_saldata?
  validates_uniqueness_of :numero, :scope => [ :anno, :deleted_at ] , :message => 'Fattura già presente nel database'
  validates_date :data_fattura, :between => [:data_fattura_precedente, :data_fattura_successiva]

  def is_saldata?
    saldata == true
  end

  def data_fattura_precedente
    if FatturaCliente.first(:order => 'numero DESC', :conditions => ['anno = ? AND numero < ?',anno, numero])
      FatturaCliente.first(:order => 'numero DESC', :conditions => ['anno = ? AND numero < ?',anno, numero]).data_fattura
    else
      "#{anno}-01-01".to_date
    end
  end
  def data_fattura_successiva
    if FatturaCliente.first(:order => 'numero ASC', :conditions => ['anno = ? AND numero > ?',anno, numero])
      FatturaCliente.first(:order => 'numero ASC', :conditions => ['anno = ? AND numero > ?',anno, numero]).data_fattura
    else
      "#{anno}-12-31".to_date
    end
  end

  def name
    if ! partner.nil?
      "#{numero.to_s} del #{data_fattura.to_s} (#{partner.name})"
    else
      "#{numero.to_s} del #{data_fattura.to_s}"
    end
  end

  def file
  end
end
